#ifndef lint
static const char yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
#endif

#define YYBYACC 1
#define YYMAJOR 1
#define YYMINOR 9
#define YYPATCH 20130304

#define YYEMPTY        (-1)
#define yyclearin      (yychar = YYEMPTY)
#define yyerrok        (yyerrflag = 0)
#define YYRECOVERING() (yyerrflag != 0)

#define YYPREFIX "yy"

#define YYPURE 0

#line 3 "flucid.y"
#include "cmanifs.h"
#include "cglobals.h"
EXPRPTR opnode(),wherenode(),defnode(),declnode(),varnode();
EXPRPTR lu_connode(),connode(),f_connode();
EXPRPTR listnode(),identlistnode();
EXPRPTR stripnumb(),bodynode(),exprlist2(),exprlist3();
float stripn(),stripcode();
STRING stripname();
#line 28 "y.tab.c"

#ifndef YYSTYPE
typedef int YYSTYPE;
#endif

/* compatibility with bison */
#ifdef YYPARSE_PARAM
/* compatibility with FreeBSD */
# ifdef YYPARSE_PARAM_TYPE
#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
# else
#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
# endif
#else
# define YYPARSE_DECL() yyparse(void)
#endif

/* Parameters sent to lex. */
#ifdef YYLEX_PARAM
# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
# define YYLEX yylex(YYLEX_PARAM)
#else
# define YYLEX_DECL() yylex(void)
# define YYLEX yylex()
#endif

/* Parameters sent to yyerror. */
#ifndef YYERROR_DECL
#define YYERROR_DECL() yyerror(const char *s)
#endif
#ifndef YYERROR_CALL
#define YYERROR_CALL(msg) yyerror(msg)
#endif

extern int YYPARSE_DECL();

#define LU0FUNC 257
#define LU1FUNC 258
#define F1FUNC 259
#define F2FUNC 260
#define LU2FUNC 261
#define LU3FUNC 262
#define WHERE 263
#define END 264
#define IS 265
#define CURRENT 266
#define IF 267
#define THEN 268
#define ELSE 269
#define ELSIF 270
#define FI 271
#define CASE 272
#define COND 273
#define OF 274
#define DEFAULT 275
#define AND 276
#define NOT 277
#define OR 278
#define FBY 279
#define CONS 280
#define REAR 281
#define IDENT 282
#define CONST 283
#define U_TYPE 284
#define RELOP 285
#define MULOP 286
#define ADDOP 287
#define APPEND 288
#define EXP 289
#define METALU 290
#define R0FUNC 291
#define R1FUNC 292
#define R2FUNC 293
#define R3FUNC 294
#define C1FUNC 295
#define C2FUNC 296
#define COMMA 297
#define COLON 298
#define DOT 299
#define WORD 300
#define STRCONC 301
#define LEND 302
#define LSTART 303
#define CLSTART 304
#define CLEND 305
#define STRING_QUOTED 306
#define YYERRCODE 256
static const short yylhs[] = {                           -1,
    0,    0,    2,    2,    2,    3,    3,    5,    5,    6,
    6,    6,    6,    4,    4,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    9,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,   10,   10,   14,   10,   13,   13,   15,   13,
   13,   13,   16,   17,   11,   18,   19,   18,   20,   18,
   18,   18,   18,   12,   21,   22,   21,   23,   21,   21,
   21,   21,    7,    7,    7,   24,   24,   25,   25,   27,
   28,   28,   29,   28,   26,   30,   26,    8,    8,   31,
    8,
};
static const short yylen[] = {                            2,
    1,    2,    1,    1,    1,    3,    2,    3,    2,    1,
    1,    2,    2,    1,    3,    4,    3,    1,    1,    2,
    6,    1,    2,    1,    1,    3,    0,    5,    1,    2,
    3,    3,    2,    8,    8,    6,    3,    3,    6,    3,
    3,    2,    3,    3,    3,    2,    3,    3,    1,    1,
    1,    1,    5,    5,    0,    6,    5,    5,    0,    6,
    3,    3,    0,    0,    7,    5,    0,    5,    0,    5,
    4,    4,    4,    3,    5,    0,    5,    0,    5,    4,
    4,    4,    1,    1,    2,    1,    2,    1,    2,    5,
    1,    3,    0,    4,    4,    0,    8,    1,    3,    0,
    4,
};
static const short yydefred[] = {                         0,
   52,   29,    0,    0,    0,   63,    0,    0,    0,    0,
    3,    0,    0,   22,    0,    0,    0,    0,    0,    4,
    0,    0,    5,    0,    0,    0,   19,   24,   25,   49,
   50,   51,   33,    0,    0,    0,    0,    0,    0,    0,
    0,   27,    0,   30,   23,    0,    0,   20,    0,    9,
    0,    0,    0,    7,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    2,
    0,   55,    0,    0,   78,    0,   76,    0,   74,    0,
    0,    0,    0,    0,   12,   13,    8,    0,    6,   26,
    0,   17,    0,    0,    0,    0,   86,   88,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   15,    0,   96,    0,   16,    0,   87,    0,
   89,    0,    0,   54,    0,    0,   53,    0,    0,   81,
   82,    0,   80,    0,    0,  100,    0,   28,    0,    0,
    0,    0,    0,    0,    0,   56,    0,    0,    0,    0,
    0,   79,   77,   75,   36,    0,    0,   39,    0,   21,
    0,   91,    0,   95,    0,   62,   61,   59,    0,   69,
    0,   67,    0,   65,    0,    0,   90,   93,    0,    0,
   34,    0,    0,    0,    0,    0,    0,   35,    0,   92,
    0,    0,   58,   57,    0,   72,   73,    0,   71,    0,
   94,    0,   60,   70,   68,   66,   97,
};
static const short yydgoto[] = {                         25,
   38,   27,   28,   56,   29,   53,   94,  119,   81,   30,
   31,   32,  137,  110,  192,   36,  112,  161,  196,  194,
   39,  115,  113,   95,   96,   97,   98,  173,  199,  153,
  166,
};
static const short yysindex[] = {                       657,
    0,    0,  657,  -27,  657,    0,  504,  657,  -18,  -16,
    0,  657,  657,    0,  657,  -10,   12,  657,   15,    0,
 -271,  555,    0,  657,    0,  951,    0,    0,    0,    0,
    0,    0,    0,  657, -158,  657, -250, -117, -223,  -82,
  657,    0, -281,    0,    0,  657,  657,    0,  657,    0,
 -148, -148, -239,    0,  -87, -241,  -41,  657, -231,  657,
  657,  657,  657,  657,  657,  657,  657,  657,  657,    0,
  430,    0,  657, 1499,    0,  657,    0,  657,    0, 1160,
  657, 1230, 1401, 1421,    0,    0,    0,  657,    0,    0,
  296,    0,  -36, -198, -214, -212,    0,    0,  -82, -153,
  296,  843, -199, -281, -228,  843, -230, -230,  657,  657,
 -242, -202,  657,  826,  657,  861,  657, 1499,  -39,  657,
  657,  657,    0, -189,    0,  657,    0,  -22,    0, -214,
    0, 1450,  344,    0,  657,  657,    0,  606,  980,    0,
    0, 1000,    0,  504,  693,    0,  657,    0,  713, 1470,
  742,  657, -203, 1029,  657,    0, 1304, 1338, -249, 1372,
 -184,    0,    0,    0,    0,  657, 1499,    0,  657,    0,
 1049,    0,  -38,    0,  762,    0,    0,    0,  657,    0,
  657,    0,  657,    0, 1499,  792,    0,    0, -193,   22,
    0,  657, -194,  657,  896,  657,  931,    0, -186,    0,
  657,  344,    0,    0, 1079,    0,    0, 1099,    0,  606,
    0, 1129,    0,    0,    0,    0,    0,
};
static const short yyrindex[] = {                         0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    1,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   97,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  215,
    0,    0,  116,    0,    0,    0,    0,    0,    0,    0,
 -201, -196,    0,    0, -205,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0, -170,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  431,    0,    0,    0, -156, -155,    0,    0,  253,  330,
  477,  381,  291,  149,  182,  398,   40,   78,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  -32,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0, -152,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  -31,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  -30,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,
};
static const short yygindex[] = {                         0,
 1419,    2,    0,   23,    5,  -35,    0,    0,    0,    0,
    0,    0, -128,    0,    0,    0,    0,  -97,    0,    0,
  -29,    0,    0,   18,    0,  -80,   21,    0,    0,    0,
    0,
};
#define YYTABLESIZE 1800
static const short yytable[] = {                         90,
   18,  148,  190,  125,  156,   75,  180,   68,   98,   99,
  101,   11,   34,  134,  129,   85,   86,  125,   58,   69,
   59,   41,   51,   42,  126,   52,  135,  136,   20,   46,
   50,   21,   92,   60,   23,   61,   62,   63,  126,   44,
   79,   18,   64,   65,   66,   67,   68,   76,  181,  129,
   93,   47,   51,   51,   49,   52,   52,   65,   69,   18,
   68,  203,   87,   89,  204,  127,   58,  128,   59,   93,
   69,  138,   69,  213,  135,  136,  152,   37,  172,  184,
   44,   60,  201,   61,   62,   63,   65,   66,  200,   68,
   64,   65,   66,   67,   68,  211,    1,   72,   44,   14,
   10,   69,   58,   64,   59,   11,   69,   83,   84,   73,
  123,   85,  216,  130,  164,   42,  131,   60,   37,   61,
   62,   63,   60,    0,    0,    0,   64,   65,   66,   67,
   68,   64,   65,   66,   11,   68,   37,    0,   77,    0,
    0,    0,   69,   58,    0,   59,    0,   69,   43,    0,
    0,   20,    0,    0,   21,    0,   42,   23,   60,    0,
   61,   62,   63,    0,    0,    0,    0,   64,   65,   66,
   67,   68,    0,   58,   42,   59,    0,    0,    0,    0,
   78,   41,    0,   69,    0,    0,    0,    0,   60,   43,
   61,   62,   63,    0,    0,    0,    0,   64,   65,   66,
   67,   68,   64,   65,   66,    0,   68,   43,    0,   88,
    0,    0,    0,   69,   46,    0,  146,  188,   69,   58,
    0,   59,   41,   98,   99,  101,    0,    0,  124,    0,
    0,    0,    0,    0,   60,    0,   61,   62,   63,    0,
   41,    0,    0,   64,   65,   66,   67,   68,    0,    0,
    0,    0,   47,    0,    0,   46,   18,  147,  189,   69,
    0,   18,    0,   18,   98,   99,  101,    0,   18,   18,
   18,   18,    0,   46,   18,    0,   18,    0,   18,   18,
   18,    0,    0,    0,    0,   18,   18,   18,   18,   18,
   45,    0,    0,   47,    0,   44,    0,   18,   18,    0,
   44,   18,   44,    0,    0,   18,    0,   44,   44,   44,
   44,   47,    0,   44,    0,   44,    0,   44,   44,   44,
    0,    0,    0,    0,   44,   44,   44,   44,   44,   48,
    0,   45,    0,   37,    0,    0,   44,   44,   37,    0,
   37,    0,    0,    0,   44,   37,   37,   37,   37,   45,
    0,   37,    0,   37,    0,   37,   37,   37,    0,    0,
    0,    0,   37,   37,   37,   37,   37,    0,    0,    0,
   48,   42,    0,    0,   37,   37,   42,    0,   42,    0,
   38,    0,   37,   42,   42,   42,   42,    0,   48,   42,
    0,   42,    0,   42,   42,   42,    0,   40,    0,    0,
   42,   42,   42,   42,   43,    0,    0,    0,    0,   43,
    0,   43,   42,   42,    0,    0,   43,   43,   43,   43,
   42,   38,   43,    0,   43,    0,   43,   43,   43,    0,
   31,    0,    0,   43,   43,   43,   43,   41,   40,   38,
    0,    0,   41,    0,   41,   43,   43,    0,    0,   41,
   41,   41,   41,   43,    0,   41,   40,   41,    0,   41,
   41,   41,    0,    0,    0,    0,   41,    0,   41,   41,
   46,   31,    0,    0,    0,   46,   32,   46,   41,   41,
    0,    0,   46,   46,   46,   46,   41,    0,   46,   31,
   46,    0,   46,   46,   46,    0,    0,    0,    0,    0,
    0,    0,   46,    0,    0,    0,    0,    0,   47,    0,
    0,   46,   46,   47,    0,   47,    0,   32,    0,   46,
   47,   47,   47,   47,    0,    0,   47,    0,   47,    0,
   47,   47,   47,    0,    0,   32,    0,    0,    0,    0,
   47,    0,    0,   24,    0,    0,   45,    0,    0,   47,
   47,   45,    0,   45,    0,    0,    0,   47,   45,   45,
   45,   45,    0,    0,   45,    0,   45,    0,   45,   45,
   45,   60,    0,   61,   62,   63,    0,    0,   45,    0,
   64,   65,   66,   67,   68,   48,    0,   45,   45,    0,
   48,    0,   48,    0,   24,   45,   69,   48,   48,   48,
   48,    0,    0,   48,   58,    0,   59,   48,   48,   48,
    0,    0,  135,  136,    0,    0,    0,   48,    0,   60,
    0,   61,   62,   63,    0,    0,   48,   48,   64,   65,
   66,   67,   68,    0,   48,    0,   38,    0,    0,    0,
    0,   38,    0,   38,   69,   24,    0,    0,   38,   38,
   38,   38,    0,   40,   38,    0,    0,    0,   40,   38,
   40,    0,    0,    0,    0,   40,   40,   40,   40,    0,
    0,   40,    0,    0,    0,    0,   40,   38,   38,    0,
    0,    0,    0,    0,    0,   38,   31,    0,    0,    0,
   58,   31,   59,   31,   40,   40,   24,    0,   31,   31,
   31,   31,   40,    0,   31,   60,    0,   61,   62,   63,
    0,    0,    0,    0,   64,   65,   66,   67,   68,    0,
    0,    0,    0,    0,    0,    0,  109,   31,   31,    0,
   69,    0,   32,  165,    0,   31,    0,   32,    0,   32,
    0,    0,    0,    0,   32,   32,   32,   32,    0,    0,
   32,    0,    0,  168,    0,    0,    0,    0,    0,    1,
    2,    3,    0,    0,    0,    4,    0,    0,    0,    0,
    5,    0,    0,   32,   32,    6,    7,    0,   37,    0,
    8,   32,  170,    0,    9,   10,   11,    0,    0,    0,
   12,    0,    0,   13,   14,   15,   16,   17,   18,   19,
    0,    0,  191,   20,    0,    0,   21,   22,    0,   23,
    1,    2,    3,    0,    0,    0,    4,    0,    0,    0,
    0,    5,    0,    0,    0,    0,    6,    7,    0,    0,
    0,    8,  198,    0,    0,    9,   10,   11,    0,    0,
    0,   12,    0,    0,   13,   14,   15,   16,   17,   18,
   19,    0,    0,    0,   20,    0,    0,   21,   22,   54,
   23,    1,    2,    3,    0,    0,    0,    4,    0,    0,
    0,    0,    5,    0,    0,    0,    0,    6,    7,    0,
  159,    0,    8,    0,  141,    0,    9,   10,   11,    0,
    0,    0,   12,    0,    0,   13,   14,   15,   16,   17,
   18,   19,    0,    0,    0,   20,    0,    0,   21,   22,
    0,   23,    1,    2,    3,    0,    0,    0,    4,  144,
    0,    0,    0,    5,    0,    0,    0,    0,    6,    7,
    0,    0,    0,    8,    0,    0,    0,    9,   10,   11,
    0,    0,    0,   12,    0,    0,   13,   14,   15,   16,
   17,   18,   19,   58,  207,   59,   20,    0,    0,   21,
   22,    0,   23,    0,    0,    0,    0,    0,   60,    0,
   61,   62,   63,   58,    0,   59,    0,   64,   65,   66,
   67,   68,    0,    0,    0,    0,    0,    0,   60,  210,
   61,   62,   63,   69,    0,    0,    0,   64,   65,   66,
   67,   68,   58,    0,   59,    0,    0,    0,    0,   70,
    0,    0,    0,   69,    0,    0,    0,   60,    0,   61,
   62,   63,   58,    0,   59,    0,   64,   65,   66,   67,
   68,    0,    0,    0,    0,    0,    0,   60,  162,   61,
   62,   63,   69,    0,    0,    0,   64,   65,   66,   67,
   68,    0,   58,    0,   59,    0,    0,    0,  163,    0,
    0,    0,   69,    0,    0,    0,    0,   60,    0,   61,
   62,   63,    0,    0,    0,    0,   64,   65,   66,   67,
   68,  140,    0,    0,    0,    0,   58,  174,   59,    0,
    0,    0,   69,    0,    0,    0,    0,    0,    0,    0,
    0,   60,    0,   61,   62,   63,    0,  187,    0,    0,
   64,   65,   66,   67,   68,    0,  143,    0,   60,    0,
   61,   58,   63,   59,    0,    0,   69,   64,   65,   66,
   67,   68,    0,    0,    0,    0,   60,  214,   61,   62,
   63,    0,    0,   69,    0,   64,   65,   66,   67,   68,
    0,  206,    0,    0,    0,    0,   58,  215,   59,    0,
    0,   69,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   60,    0,   61,   62,   63,    0,    0,    0,    0,
   64,   65,   66,   67,   68,    0,  209,  217,    0,    0,
    0,   58,    0,   59,    0,    0,   69,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   60,    0,   61,   62,
   63,   58,    0,   59,    0,   64,   65,   66,   67,   68,
    0,    0,    0,    0,    0,    0,   60,    0,   61,   62,
   63,   69,    0,    0,    0,   64,   65,   66,   67,   68,
   58,    0,   59,    0,    0,    0,    0,    0,    0,    0,
    0,   69,    0,    0,    0,   60,    0,   61,   62,   63,
   58,    0,   59,    0,   64,   65,   66,   67,   68,    0,
    0,    0,    0,    0,    0,   60,    0,   61,   62,   63,
   69,    0,    0,    0,   64,   65,   66,   67,   68,   58,
    0,   59,    0,    0,    0,    0,    0,    0,    0,    0,
   69,    0,    0,    0,   60,    0,   61,   62,   63,   58,
    0,   59,    0,   64,   65,   66,   67,   68,    0,    0,
    0,    0,    0,    0,   60,    0,   61,   62,   63,   69,
    0,    0,    0,   64,   65,   66,   67,   68,    0,   58,
    0,   59,    0,    0,    0,    0,    0,    0,    0,   69,
    0,    0,    0,    0,   60,    0,   61,   62,   63,   58,
    0,   59,    0,   64,   65,   66,   67,   68,    0,    0,
    0,    0,    0,    0,   60,    0,   61,   62,   63,   69,
    0,    0,    0,   64,   65,   66,   67,   68,    0,   58,
    0,   59,    0,    0,    0,    0,    0,    0,    0,   69,
    0,    0,    0,    0,   60,    0,   61,   62,   63,    0,
    0,    0,    0,   64,   65,   66,   67,   68,   26,    0,
   58,   33,   59,   35,    0,    0,   40,    0,    0,   69,
   43,   44,    0,   45,    0,   60,   48,   61,   62,   63,
   55,    0,   57,    0,   64,   65,   66,   67,   68,    0,
    0,    0,   71,    0,   74,    0,  117,    0,    0,   80,
   69,    0,    0,    0,   82,   83,    0,   84,    0,    0,
    0,    0,    0,    0,    0,    0,   91,    0,   99,  100,
  101,  102,  103,  104,  105,  106,  107,  108,    0,    0,
   58,  111,   59,    0,  114,    0,  116,    0,    0,  118,
    0,    0,    0,    0,    0,   60,   55,   61,   62,   63,
    0,    0,    0,    0,   64,   65,   66,   67,   68,    0,
    0,    0,    0,    0,    0,    0,  120,  132,  133,    0,
   69,  139,    0,  142,    0,  145,    0,    0,  149,  150,
  151,    0,    0,    0,  154,    0,    0,    0,    0,    0,
    0,    0,    0,  157,  158,    0,  160,    0,    0,  176,
    0,    0,    0,    0,   58,  167,   59,    0,    0,    0,
  171,    0,    0,  175,  177,    0,    0,    0,    0,   60,
    0,   61,   62,   63,  185,    0,    0,  186,   64,   65,
   66,   67,   68,  178,    0,    0,    0,  193,   58,  195,
   59,  197,    0,    0,   69,  179,    0,    0,    0,    0,
  202,    0,  205,   60,  208,   61,   62,   63,    0,  212,
    0,    0,   64,   65,   66,   67,   68,  182,  160,    0,
    0,    0,   58,    0,   59,    0,    0,    0,   69,    0,
    0,    0,    0,    0,    0,    0,    0,   60,    0,   61,
   62,   63,    0,    0,    0,    0,   64,   65,   66,   67,
   68,   58,    0,   59,    0,    0,    0,    0,    0,  183,
    0,    0,   69,    0,    0,    0,   60,    0,   61,   62,
   63,   58,    0,   59,    0,   64,   65,   66,   67,   68,
    0,    0,    0,    0,    0,    0,   60,  121,   61,   62,
   63,   69,    0,    0,    0,   64,   65,   66,   67,   68,
   58,    0,   59,    0,    0,    0,    0,  122,    0,    0,
    0,   69,    0,    0,    0,   60,    0,   61,   62,   63,
   58,    0,   59,    0,   64,   65,   66,   67,   68,    0,
    0,    0,    0,    0,    0,   60,  155,   61,   62,   63,
   69,    0,    0,    0,   64,   65,   66,   67,   68,   58,
    0,   59,    0,    0,    0,    0,  169,    0,    0,    0,
   69,    0,    0,    0,   60,    0,   61,   62,   63,    0,
    0,    0,    0,   64,   65,   66,   67,   68,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   69,
};
static const short yycheck[] = {                         41,
    0,   41,   41,   40,  133,  256,  256,  289,   41,   41,
   41,  283,   40,  256,   95,   51,   52,   40,  261,  301,
  263,   40,   21,   40,   61,   21,  269,  270,  300,   40,
  302,  303,  264,  276,  306,  278,  279,  280,   61,    0,
  264,   41,  285,  286,  287,  288,  289,  298,  298,  130,
  282,   40,   51,   52,   40,   51,   52,  286,  301,   59,
  289,  256,  302,  305,  193,  264,  261,  282,  263,  282,
  301,  274,  301,  202,  269,  270,  266,    0,  282,  264,
   41,  276,   61,  278,  279,  280,  286,  287,  282,  289,
  285,  286,  287,  288,  289,  282,    0,  256,   59,  305,
  302,  301,  261,  274,  263,  302,  301,  264,  264,  268,
   88,  264,  210,   96,  144,    0,   96,  276,   41,  278,
  279,  280,  276,   -1,   -1,   -1,  285,  286,  287,  288,
  289,  285,  286,  287,  283,  289,   59,   -1,  256,   -1,
   -1,   -1,  301,  261,   -1,  263,   -1,  301,    0,   -1,
   -1,  300,   -1,   -1,  303,   -1,   41,  306,  276,   -1,
  278,  279,  280,   -1,   -1,   -1,   -1,  285,  286,  287,
  288,  289,   -1,  261,   59,  263,   -1,   -1,   -1,   -1,
  298,    0,   -1,  301,   -1,   -1,   -1,   -1,  276,   41,
  278,  279,  280,   -1,   -1,   -1,   -1,  285,  286,  287,
  288,  289,  285,  286,  287,   -1,  289,   59,   -1,  297,
   -1,   -1,   -1,  301,    0,   -1,  256,  256,  301,  261,
   -1,  263,   41,  256,  256,  256,   -1,   -1,  265,   -1,
   -1,   -1,   -1,   -1,  276,   -1,  278,  279,  280,   -1,
   59,   -1,   -1,  285,  286,  287,  288,  289,   -1,   -1,
   -1,   -1,    0,   -1,   -1,   41,  256,  297,  297,  301,
   -1,  261,   -1,  263,  297,  297,  297,   -1,  268,  269,
  270,  271,   -1,   59,  274,   -1,  276,   -1,  278,  279,
  280,   -1,   -1,   -1,   -1,  285,  286,  287,  288,  289,
    0,   -1,   -1,   41,   -1,  256,   -1,  297,  298,   -1,
  261,  301,  263,   -1,   -1,  305,   -1,  268,  269,  270,
  271,   59,   -1,  274,   -1,  276,   -1,  278,  279,  280,
   -1,   -1,   -1,   -1,  285,  286,  287,  288,  289,    0,
   -1,   41,   -1,  256,   -1,   -1,  297,  298,  261,   -1,
  263,   -1,   -1,   -1,  305,  268,  269,  270,  271,   59,
   -1,  274,   -1,  276,   -1,  278,  279,  280,   -1,   -1,
   -1,   -1,  285,  286,  287,  288,  289,   -1,   -1,   -1,
   41,  256,   -1,   -1,  297,  298,  261,   -1,  263,   -1,
    0,   -1,  305,  268,  269,  270,  271,   -1,   59,  274,
   -1,  276,   -1,  278,  279,  280,   -1,    0,   -1,   -1,
  285,  286,  287,  288,  256,   -1,   -1,   -1,   -1,  261,
   -1,  263,  297,  298,   -1,   -1,  268,  269,  270,  271,
  305,   41,  274,   -1,  276,   -1,  278,  279,  280,   -1,
    0,   -1,   -1,  285,  286,  287,  288,  256,   41,   59,
   -1,   -1,  261,   -1,  263,  297,  298,   -1,   -1,  268,
  269,  270,  271,  305,   -1,  274,   59,  276,   -1,  278,
  279,  280,   -1,   -1,   -1,   -1,  285,   -1,  287,  288,
  256,   41,   -1,   -1,   -1,  261,    0,  263,  297,  298,
   -1,   -1,  268,  269,  270,  271,  305,   -1,  274,   59,
  276,   -1,  278,  279,  280,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  288,   -1,   -1,   -1,   -1,   -1,  256,   -1,
   -1,  297,  298,  261,   -1,  263,   -1,   41,   -1,  305,
  268,  269,  270,  271,   -1,   -1,  274,   -1,  276,   -1,
  278,  279,  280,   -1,   -1,   59,   -1,   -1,   -1,   -1,
  288,   -1,   -1,   40,   -1,   -1,  256,   -1,   -1,  297,
  298,  261,   -1,  263,   -1,   -1,   -1,  305,  268,  269,
  270,  271,   -1,   -1,  274,   -1,  276,   -1,  278,  279,
  280,  276,   -1,  278,  279,  280,   -1,   -1,  288,   -1,
  285,  286,  287,  288,  289,  256,   -1,  297,  298,   -1,
  261,   -1,  263,   -1,   40,  305,  301,  268,  269,  270,
  271,   -1,   -1,  274,  261,   -1,  263,  278,  279,  280,
   -1,   -1,  269,  270,   -1,   -1,   -1,  288,   -1,  276,
   -1,  278,  279,  280,   -1,   -1,  297,  298,  285,  286,
  287,  288,  289,   -1,  305,   -1,  256,   -1,   -1,   -1,
   -1,  261,   -1,  263,  301,   40,   -1,   -1,  268,  269,
  270,  271,   -1,  256,  274,   -1,   -1,   -1,  261,  279,
  263,   -1,   -1,   -1,   -1,  268,  269,  270,  271,   -1,
   -1,  274,   -1,   -1,   -1,   -1,  279,  297,  298,   -1,
   -1,   -1,   -1,   -1,   -1,  305,  256,   -1,   -1,   -1,
  261,  261,  263,  263,  297,  298,   40,   -1,  268,  269,
  270,  271,  305,   -1,  274,  276,   -1,  278,  279,  280,
   -1,   -1,   -1,   -1,  285,  286,  287,  288,  289,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  297,  297,  298,   -1,
  301,   -1,  256,   41,   -1,  305,   -1,  261,   -1,  263,
   -1,   -1,   -1,   -1,  268,  269,  270,  271,   -1,   -1,
  274,   -1,   -1,   41,   -1,   -1,   -1,   -1,   -1,  256,
  257,  258,   -1,   -1,   -1,  262,   -1,   -1,   -1,   -1,
  267,   -1,   -1,  297,  298,  272,  273,   -1,  275,   -1,
  277,  305,   41,   -1,  281,  282,  283,   -1,   -1,   -1,
  287,   -1,   -1,  290,  291,  292,  293,  294,  295,  296,
   -1,   -1,   41,  300,   -1,   -1,  303,  304,   -1,  306,
  256,  257,  258,   -1,   -1,   -1,  262,   -1,   -1,   -1,
   -1,  267,   -1,   -1,   -1,   -1,  272,  273,   -1,   -1,
   -1,  277,   41,   -1,   -1,  281,  282,  283,   -1,   -1,
   -1,  287,   -1,   -1,  290,  291,  292,  293,  294,  295,
  296,   -1,   -1,   -1,  300,   -1,   -1,  303,  304,  305,
  306,  256,  257,  258,   -1,   -1,   -1,  262,   -1,   -1,
   -1,   -1,  267,   -1,   -1,   -1,   -1,  272,  273,   -1,
  275,   -1,  277,   -1,   59,   -1,  281,  282,  283,   -1,
   -1,   -1,  287,   -1,   -1,  290,  291,  292,  293,  294,
  295,  296,   -1,   -1,   -1,  300,   -1,   -1,  303,  304,
   -1,  306,  256,  257,  258,   -1,   -1,   -1,  262,   59,
   -1,   -1,   -1,  267,   -1,   -1,   -1,   -1,  272,  273,
   -1,   -1,   -1,  277,   -1,   -1,   -1,  281,  282,  283,
   -1,   -1,   -1,  287,   -1,   -1,  290,  291,  292,  293,
  294,  295,  296,  261,   59,  263,  300,   -1,   -1,  303,
  304,   -1,  306,   -1,   -1,   -1,   -1,   -1,  276,   -1,
  278,  279,  280,  261,   -1,  263,   -1,  285,  286,  287,
  288,  289,   -1,   -1,   -1,   -1,   -1,   -1,  276,   59,
  278,  279,  280,  301,   -1,   -1,   -1,  285,  286,  287,
  288,  289,  261,   -1,  263,   -1,   -1,   -1,   -1,   59,
   -1,   -1,   -1,  301,   -1,   -1,   -1,  276,   -1,  278,
  279,  280,  261,   -1,  263,   -1,  285,  286,  287,  288,
  289,   -1,   -1,   -1,   -1,   -1,   -1,  276,   59,  278,
  279,  280,  301,   -1,   -1,   -1,  285,  286,  287,  288,
  289,   -1,  261,   -1,  263,   -1,   -1,   -1,   59,   -1,
   -1,   -1,  301,   -1,   -1,   -1,   -1,  276,   -1,  278,
  279,  280,   -1,   -1,   -1,   -1,  285,  286,  287,  288,
  289,  256,   -1,   -1,   -1,   -1,  261,   59,  263,   -1,
   -1,   -1,  301,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  276,   -1,  278,  279,  280,   -1,   59,   -1,   -1,
  285,  286,  287,  288,  289,   -1,  256,   -1,  276,   -1,
  278,  261,  280,  263,   -1,   -1,  301,  285,  286,  287,
  288,  289,   -1,   -1,   -1,   -1,  276,   59,  278,  279,
  280,   -1,   -1,  301,   -1,  285,  286,  287,  288,  289,
   -1,  256,   -1,   -1,   -1,   -1,  261,   59,  263,   -1,
   -1,  301,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  276,   -1,  278,  279,  280,   -1,   -1,   -1,   -1,
  285,  286,  287,  288,  289,   -1,  256,   59,   -1,   -1,
   -1,  261,   -1,  263,   -1,   -1,  301,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  276,   -1,  278,  279,
  280,  261,   -1,  263,   -1,  285,  286,  287,  288,  289,
   -1,   -1,   -1,   -1,   -1,   -1,  276,   -1,  278,  279,
  280,  301,   -1,   -1,   -1,  285,  286,  287,  288,  289,
  261,   -1,  263,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  301,   -1,   -1,   -1,  276,   -1,  278,  279,  280,
  261,   -1,  263,   -1,  285,  286,  287,  288,  289,   -1,
   -1,   -1,   -1,   -1,   -1,  276,   -1,  278,  279,  280,
  301,   -1,   -1,   -1,  285,  286,  287,  288,  289,  261,
   -1,  263,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  301,   -1,   -1,   -1,  276,   -1,  278,  279,  280,  261,
   -1,  263,   -1,  285,  286,  287,  288,  289,   -1,   -1,
   -1,   -1,   -1,   -1,  276,   -1,  278,  279,  280,  301,
   -1,   -1,   -1,  285,  286,  287,  288,  289,   -1,  261,
   -1,  263,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  301,
   -1,   -1,   -1,   -1,  276,   -1,  278,  279,  280,  261,
   -1,  263,   -1,  285,  286,  287,  288,  289,   -1,   -1,
   -1,   -1,   -1,   -1,  276,   -1,  278,  279,  280,  301,
   -1,   -1,   -1,  285,  286,  287,  288,  289,   -1,  261,
   -1,  263,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  301,
   -1,   -1,   -1,   -1,  276,   -1,  278,  279,  280,   -1,
   -1,   -1,   -1,  285,  286,  287,  288,  289,    0,   -1,
  261,    3,  263,    5,   -1,   -1,    8,   -1,   -1,  301,
   12,   13,   -1,   15,   -1,  276,   18,  278,  279,  280,
   22,   -1,   24,   -1,  285,  286,  287,  288,  289,   -1,
   -1,   -1,   34,   -1,   36,   -1,  297,   -1,   -1,   41,
  301,   -1,   -1,   -1,   46,   47,   -1,   49,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   58,   -1,   60,   61,
   62,   63,   64,   65,   66,   67,   68,   69,   -1,   -1,
  261,   73,  263,   -1,   76,   -1,   78,   -1,   -1,   81,
   -1,   -1,   -1,   -1,   -1,  276,   88,  278,  279,  280,
   -1,   -1,   -1,   -1,  285,  286,  287,  288,  289,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  297,  109,  110,   -1,
  301,  113,   -1,  115,   -1,  117,   -1,   -1,  120,  121,
  122,   -1,   -1,   -1,  126,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  135,  136,   -1,  138,   -1,   -1,  256,
   -1,   -1,   -1,   -1,  261,  147,  263,   -1,   -1,   -1,
  152,   -1,   -1,  155,  271,   -1,   -1,   -1,   -1,  276,
   -1,  278,  279,  280,  166,   -1,   -1,  169,  285,  286,
  287,  288,  289,  256,   -1,   -1,   -1,  179,  261,  181,
  263,  183,   -1,   -1,  301,  268,   -1,   -1,   -1,   -1,
  192,   -1,  194,  276,  196,  278,  279,  280,   -1,  201,
   -1,   -1,  285,  286,  287,  288,  289,  256,  210,   -1,
   -1,   -1,  261,   -1,  263,   -1,   -1,   -1,  301,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  276,   -1,  278,
  279,  280,   -1,   -1,   -1,   -1,  285,  286,  287,  288,
  289,  261,   -1,  263,   -1,   -1,   -1,   -1,   -1,  298,
   -1,   -1,  301,   -1,   -1,   -1,  276,   -1,  278,  279,
  280,  261,   -1,  263,   -1,  285,  286,  287,  288,  289,
   -1,   -1,   -1,   -1,   -1,   -1,  276,  297,  278,  279,
  280,  301,   -1,   -1,   -1,  285,  286,  287,  288,  289,
  261,   -1,  263,   -1,   -1,   -1,   -1,  297,   -1,   -1,
   -1,  301,   -1,   -1,   -1,  276,   -1,  278,  279,  280,
  261,   -1,  263,   -1,  285,  286,  287,  288,  289,   -1,
   -1,   -1,   -1,   -1,   -1,  276,  297,  278,  279,  280,
  301,   -1,   -1,   -1,  285,  286,  287,  288,  289,  261,
   -1,  263,   -1,   -1,   -1,   -1,  297,   -1,   -1,   -1,
  301,   -1,   -1,   -1,  276,   -1,  278,  279,  280,   -1,
   -1,   -1,   -1,  285,  286,  287,  288,  289,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  301,
};
#define YYFINAL 25
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 306
#if YYDEBUG
static const char *yyname[] = {

"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"'('","')'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"';'",0,"'='",0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"LU0FUNC",
"LU1FUNC","F1FUNC","F2FUNC","LU2FUNC","LU3FUNC","WHERE","END","IS","CURRENT",
"IF","THEN","ELSE","ELSIF","FI","CASE","COND","OF","DEFAULT","AND","NOT","OR",
"FBY","CONS","REAR","IDENT","CONST","U_TYPE","RELOP","MULOP","ADDOP","APPEND",
"EXP","METALU","R0FUNC","R1FUNC","R2FUNC","R3FUNC","C1FUNC","C2FUNC","COMMA",
"COLON","DOT","WORD","STRCONC","LEND","LSTART","CLSTART","CLEND",
"STRING_QUOTED",
};
static const char *yyrule[] = {
"$accept : accept",
"accept : expr",
"accept : expr ';'",
"constant : CONST",
"constant : WORD",
"constant : STRING_QUOTED",
"list : CLSTART listbody CLEND",
"list : CLSTART CLEND",
"clist : LSTART clistbody LEND",
"clist : LSTART LEND",
"clistbody : constant",
"clistbody : clist",
"clistbody : constant clistbody",
"clistbody : clist clistbody",
"listbody : expr",
"listbody : expr COMMA listbody",
"expr : expr WHERE wherebody END",
"expr : expr WHERE END",
"expr : IDENT",
"expr : constant",
"expr : C1FUNC expr",
"expr : C2FUNC '(' expr COMMA expr ')'",
"expr : R0FUNC",
"expr : R1FUNC expr",
"expr : list",
"expr : clist",
"expr : '(' expr ')'",
"$$1 :",
"expr : IDENT '(' $$1 exprlist ')'",
"expr : LU0FUNC",
"expr : METALU expr",
"expr : expr LU2FUNC expr",
"expr : expr FBY expr",
"expr : LU1FUNC expr",
"expr : LU3FUNC '(' expr COMMA expr COMMA expr ')'",
"expr : R3FUNC '(' expr COMMA expr COMMA expr ')'",
"expr : REAR '(' expr COMMA expr ')'",
"expr : expr STRCONC expr",
"expr : expr CONS expr",
"expr : R2FUNC '(' expr COMMA expr ')'",
"expr : expr APPEND expr",
"expr : expr ADDOP expr",
"expr : ADDOP expr",
"expr : expr MULOP expr",
"expr : expr EXP expr",
"expr : expr RELOP expr",
"expr : NOT expr",
"expr : expr AND expr",
"expr : expr OR expr",
"expr : ifexpression",
"expr : casexpr",
"expr : condexpr",
"expr : error",
"ifexpression : IF expr THEN expr ending",
"ifexpression : IF expr THEN expr error",
"$$2 :",
"ifexpression : IF expr error $$2 expr ending",
"ending : ELSIF expr THEN expr ending",
"ending : ELSIF expr THEN expr error",
"$$3 :",
"ending : ELSIF expr error $$3 expr ending",
"ending : ELSE expr FI",
"ending : ELSE expr error",
"$$4 :",
"$$5 :",
"casexpr : CASE $$4 expr $$5 OF casebody END",
"casebody : expr COLON expr ';' casebody",
"$$6 :",
"casebody : expr error $$6 expr ';'",
"$$7 :",
"casebody : DEFAULT error $$7 expr ';'",
"casebody : expr COLON expr error",
"casebody : DEFAULT COLON expr error",
"casebody : DEFAULT COLON expr ';'",
"condexpr : COND condbody END",
"condbody : expr COLON expr ';' condbody",
"$$8 :",
"condbody : expr error $$8 expr ';'",
"$$9 :",
"condbody : DEFAULT error $$9 expr ';'",
"condbody : expr COLON expr error",
"condbody : DEFAULT COLON expr error",
"condbody : DEFAULT COLON expr ';'",
"wherebody : definitions",
"wherebody : declarations",
"wherebody : declarations definitions",
"definitions : assertion",
"definitions : definitions assertion",
"declarations : currenting",
"declarations : declarations currenting",
"currenting : IDENT IS CURRENT expr ';'",
"identlist : IDENT",
"identlist : identlist COMMA IDENT",
"$$10 :",
"identlist : identlist error $$10 IDENT",
"assertion : IDENT '=' expr ';'",
"$$11 :",
"assertion : IDENT '(' $$11 identlist ')' '=' expr ';'",
"exprlist : expr",
"exprlist : exprlist COMMA expr",
"$$12 :",
"exprlist : exprlist error $$12 expr",

};
#endif

int      yydebug;
int      yynerrs;

int      yyerrflag;
int      yychar;
YYSTYPE  yyval;
YYSTYPE  yylval;

/* define the initial stack-sizes */
#ifdef YYSTACKSIZE
#undef YYMAXDEPTH
#define YYMAXDEPTH  YYSTACKSIZE
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 10000
#define YYMAXDEPTH  500
#endif
#endif

#define YYINITSTACKSIZE 500

typedef struct {
    unsigned stacksize;
    short    *s_base;
    short    *s_mark;
    short    *s_last;
    YYSTYPE  *l_base;
    YYSTYPE  *l_mark;
} YYSTACKDATA;
/* variables for the parser stack */
static YYSTACKDATA yystack;

#if YYDEBUG
#include <stdio.h>		/* needed for printf */
#endif

#include <stdlib.h>	/* needed for malloc, etc */
#include <string.h>	/* needed for memset */

/* allocate initial stack or double stack size, up to YYMAXDEPTH */
static int yygrowstack(YYSTACKDATA *data)
{
    int i;
    unsigned newsize;
    short *newss;
    YYSTYPE *newvs;

    if ((newsize = data->stacksize) == 0)
        newsize = YYINITSTACKSIZE;
    else if (newsize >= YYMAXDEPTH)
        return -1;
    else if ((newsize *= 2) > YYMAXDEPTH)
        newsize = YYMAXDEPTH;

    i = (int) (data->s_mark - data->s_base);
    newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
    if (newss == 0)
        return -1;

    data->s_base = newss;
    data->s_mark = newss + i;

    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
    if (newvs == 0)
        return -1;

    data->l_base = newvs;
    data->l_mark = newvs + i;

    data->stacksize = newsize;
    data->s_last = data->s_base + newsize - 1;
    return 0;
}

#if YYPURE || defined(YY_NO_LEAKS)
static void yyfreestack(YYSTACKDATA *data)
{
    free(data->s_base);
    free(data->l_base);
    memset(data, 0, sizeof(*data));
}
#else
#define yyfreestack(data) /* nothing */
#endif

#define YYABORT  goto yyabort
#define YYREJECT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR  goto yyerrlab

int
YYPARSE_DECL()
{
    int yym, yyn, yystate;
#if YYDEBUG
    const char *yys;

    if ((yys = getenv("YYDEBUG")) != 0)
    {
        yyn = *yys;
        if (yyn >= '0' && yyn <= '9')
            yydebug = yyn - '0';
    }
#endif

    yynerrs = 0;
    yyerrflag = 0;
    yychar = YYEMPTY;
    yystate = 0;

#if YYPURE
    memset(&yystack, 0, sizeof(yystack));
#endif

    if (yystack.s_base == NULL && yygrowstack(&yystack)) goto yyoverflow;
    yystack.s_mark = yystack.s_base;
    yystack.l_mark = yystack.l_base;
    yystate = 0;
    *yystack.s_mark = 0;

yyloop:
    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
    if (yychar < 0)
    {
        if ((yychar = YYLEX) < 0) yychar = 0;
#if YYDEBUG
        if (yydebug)
        {
            yys = 0;
            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
            if (!yys) yys = "illegal-symbol";
            printf("%sdebug: state %d, reading %d (%s)\n",
                    YYPREFIX, yystate, yychar, yys);
        }
#endif
    }
    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
#if YYDEBUG
        if (yydebug)
            printf("%sdebug: state %d, shifting to state %d\n",
                    YYPREFIX, yystate, yytable[yyn]);
#endif
        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
        {
            goto yyoverflow;
        }
        yystate = yytable[yyn];
        *++yystack.s_mark = yytable[yyn];
        *++yystack.l_mark = yylval;
        yychar = YYEMPTY;
        if (yyerrflag > 0)  --yyerrflag;
        goto yyloop;
    }
    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
        yyn = yytable[yyn];
        goto yyreduce;
    }
    if (yyerrflag) goto yyinrecovery;

    yyerror("syntax error");

    goto yyerrlab;

yyerrlab:
    ++yynerrs;

yyinrecovery:
    if (yyerrflag < 3)
    {
        yyerrflag = 3;
        for (;;)
        {
            if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 &&
                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
            {
#if YYDEBUG
                if (yydebug)
                    printf("%sdebug: state %d, error recovery shifting\
 to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
#endif
                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
                {
                    goto yyoverflow;
                }
                yystate = yytable[yyn];
                *++yystack.s_mark = yytable[yyn];
                *++yystack.l_mark = yylval;
                goto yyloop;
            }
            else
            {
#if YYDEBUG
                if (yydebug)
                    printf("%sdebug: error recovery discarding state %d\n",
                            YYPREFIX, *yystack.s_mark);
#endif
                if (yystack.s_mark <= yystack.s_base) goto yyabort;
                --yystack.s_mark;
                --yystack.l_mark;
            }
        }
    }
    else
    {
        if (yychar == 0) goto yyabort;
#if YYDEBUG
        if (yydebug)
        {
            yys = 0;
            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
            if (!yys) yys = "illegal-symbol";
            printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
                    YYPREFIX, yystate, yychar, yys);
        }
#endif
        yychar = YYEMPTY;
        goto yyloop;
    }

yyreduce:
#if YYDEBUG
    if (yydebug)
        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
                YYPREFIX, yystate, yyn, yyrule[yyn]);
#endif
    yym = yylen[yyn];
    if (yym)
        yyval = yystack.l_mark[1-yym];
    else
        memset(&yyval, 0, sizeof yyval);
    switch (yyn)
    {
case 1:
#line 41 "flucid.y"
	{ yyval.eptr = yystack.l_mark[0].eptr;
          if (errcount==0) {  pass1(yystack.l_mark[0].eptr); }
       }
break;
case 2:
#line 45 "flucid.y"
	{ yyval.eptr = yystack.l_mark[-1].eptr;
          if (errcount==0) {  pass1(yystack.l_mark[-1].eptr); }
       }
break;
case 3:
#line 51 "flucid.y"
	{ yyval.eptr = f_connode(yystack.l_mark[0].numb); }
break;
case 4:
#line 52 "flucid.y"
	{ yyval.eptr = connode("word",yystack.l_mark[0].resptr->strg); }
break;
case 5:
#line 53 "flucid.y"
	{ yyval.eptr = connode("string",yystack.l_mark[0].resptr->strg); }
break;
case 6:
#line 57 "flucid.y"
	{ yyval.eptr = yystack.l_mark[-1].eptr; }
break;
case 7:
#line 58 "flucid.y"
	{ yyval.eptr = connode("special","nil"); }
break;
case 8:
#line 62 "flucid.y"
	{ yyval.eptr = yystack.l_mark[-1].eptr; }
break;
case 9:
#line 63 "flucid.y"
	{ yyval.eptr = connode("special","nil"); }
break;
case 10:
#line 67 "flucid.y"
	{ yyval.eptr = opnode("cons",0,
                        exprlist2(yystack.l_mark[0].eptr,connode("special","nil")),
                                 filenode( in_files[in_index].in_line,
                                 curr_index)); }
break;
case 11:
#line 71 "flucid.y"
	{ yyval.eptr = opnode("cons",0,
                                exprlist2(yystack.l_mark[0].eptr,connode("special","nil")),
                                 filenode(in_files[in_index].in_line,
                                 curr_index)); }
break;
case 12:
#line 75 "flucid.y"
	{ yyval.eptr = opnode("cons",0,
                                           exprlist2(yystack.l_mark[-1].eptr,yystack.l_mark[0].eptr),
                                 filenode(in_files[in_index].in_line,
                                 curr_index)); }
break;
case 13:
#line 79 "flucid.y"
	{ yyval.eptr = opnode("cons",0,
                                        exprlist2(yystack.l_mark[-1].eptr,yystack.l_mark[0].eptr),
                                 filenode(in_files[in_index].in_line,
                                 curr_index)); }
break;
case 14:
#line 87 "flucid.y"
	{ yyval.eptr = opnode("cons",0,
                              exprlist2(yystack.l_mark[0].eptr,connode("special","nil")),
                                 filenode(in_files[in_index].in_line,
                                 curr_index)); }
break;
case 15:
#line 91 "flucid.y"
	{
                      yyval.eptr = opnode("cons",0,
                                exprlist2(yystack.l_mark[-2].eptr,yystack.l_mark[0].eptr),
                                 filenode(in_files[in_index].in_line,
                                 yystack.l_mark[-1].resptr->len)); }
break;
case 16:
#line 102 "flucid.y"
	{ yyval.eptr = wherenode(yystack.l_mark[-3].eptr,yystack.l_mark[-1].eptr,
                        filenode(yystack.l_mark[-2].resptr->line,yystack.l_mark[-2].resptr->len)); }
break;
case 17:
#line 107 "flucid.y"
	{ yyval.eptr = yystack.l_mark[-2].eptr; }
break;
case 18:
#line 108 "flucid.y"
	{ yyval.eptr = varnode(yystack.l_mark[0].resptr->strg,0,NULL,
                             filenode(yystack.l_mark[0].resptr->line,yystack.l_mark[0].resptr->len)); }
break;
case 19:
#line 110 "flucid.y"
	{ yyval.eptr = yystack.l_mark[0].eptr; }
break;
case 20:
#line 112 "flucid.y"
	{ yyval.eptr = opnode(yystack.l_mark[-1].resptr->strg, 0,
                                             listnode(NULL,yystack.l_mark[0].eptr),
                             filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 21:
#line 115 "flucid.y"
	{
                yyval.eptr = opnode(yystack.l_mark[-5].resptr->strg,0,exprlist2(yystack.l_mark[-3].eptr,yystack.l_mark[-1].eptr),
                                 filenode(yystack.l_mark[-5].resptr->line,yystack.l_mark[-5].resptr->len)); }
break;
case 22:
#line 118 "flucid.y"
	{ yyval.eptr = connode("special",yystack.l_mark[0].resptr->strg); }
break;
case 23:
#line 120 "flucid.y"
	{ yyval.eptr = opnode(yystack.l_mark[-1].resptr->strg, 0,
                                             listnode(NULL,yystack.l_mark[0].eptr),
                             filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 24:
#line 123 "flucid.y"
	{ yyval.eptr = yystack.l_mark[0].eptr; }
break;
case 25:
#line 124 "flucid.y"
	{ yyval.eptr = yystack.l_mark[0].eptr; }
break;
case 26:
#line 125 "flucid.y"
	{ yyval.eptr = yystack.l_mark[-1].eptr; }
break;
case 27:
#line 126 "flucid.y"
	{ exprlistcount[++exprlevel]=0;}
break;
case 28:
#line 127 "flucid.y"
	{
            yyval.eptr = varnode(yystack.l_mark[-4].resptr->strg,exprlistcount[exprlevel--]
                                ,yystack.l_mark[-1].eptr,
                            filenode(yystack.l_mark[-4].resptr->line,yystack.l_mark[-4].resptr->len)); }
break;
case 29:
#line 131 "flucid.y"
	{ yyval.eptr =opnode(stripname(yystack.l_mark[0].resptr->strg),
				(int)stripn(yystack.l_mark[0].resptr->strg),
				listnode(NULL,stripnumb(yystack.l_mark[0].resptr->strg)),
                            filenode(yystack.l_mark[0].resptr->line,yystack.l_mark[0].resptr->len)); }
break;
case 30:
#line 135 "flucid.y"
	{
             yyval.eptr = opnode(stripname(yystack.l_mark[-1].resptr->strg),
				(int)stripcode(yystack.l_mark[-1].resptr->strg),
		listnode(NULL,yystack.l_mark[0].eptr),
                            filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 31:
#line 140 "flucid.y"
	{
             yyval.eptr = opnode(stripname(yystack.l_mark[-1].resptr->strg),
				(int)stripn(yystack.l_mark[-1].resptr->strg),
		exprlist2(yystack.l_mark[-2].eptr,yystack.l_mark[0].eptr),
                            filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 32:
#line 145 "flucid.y"
	{ yyval.eptr =
                         opnode(stripname(yystack.l_mark[-1].resptr->strg),
				(int)stripn(yystack.l_mark[-1].resptr->strg),
			exprlist2(yystack.l_mark[-2].eptr,yystack.l_mark[0].eptr),
                            filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 33:
#line 151 "flucid.y"
	{  yyval.eptr = opnode(stripname(yystack.l_mark[-1].resptr->strg),
				(int)stripn(yystack.l_mark[-1].resptr->strg),
			listnode(NULL,yystack.l_mark[0].eptr),
                             filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 34:
#line 155 "flucid.y"
	{
                yyval.eptr =
                 opnode(yystack.l_mark[-7].resptr->strg,3,exprlist3(yystack.l_mark[-5].eptr,yystack.l_mark[-3].eptr,yystack.l_mark[-1].eptr),
                             filenode(yystack.l_mark[-7].resptr->line,yystack.l_mark[-7].resptr->len)); }
break;
case 35:
#line 159 "flucid.y"
	{
                yyval.eptr =
                 opnode(yystack.l_mark[-7].resptr->strg,3,exprlist3(yystack.l_mark[-5].eptr,yystack.l_mark[-3].eptr,yystack.l_mark[-1].eptr),
                             filenode(yystack.l_mark[-7].resptr->line,yystack.l_mark[-7].resptr->len)); }
break;
case 36:
#line 163 "flucid.y"
	{
                 yyval.eptr = opnode("rear",0,exprlist2(yystack.l_mark[-3].eptr,yystack.l_mark[-1].eptr),
                                 filenode(yystack.l_mark[-5].resptr->line,yystack.l_mark[-5].resptr->len)); }
break;
case 37:
#line 166 "flucid.y"
	{
                yyval.eptr = opnode("strconc",0,exprlist2(yystack.l_mark[-2].eptr,yystack.l_mark[0].eptr),
                                 filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 38:
#line 169 "flucid.y"
	{
                yyval.eptr = opnode("cons",0,exprlist2(yystack.l_mark[-2].eptr,yystack.l_mark[0].eptr),
                                 filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 39:
#line 172 "flucid.y"
	{
                yyval.eptr = opnode(yystack.l_mark[-5].resptr->strg,0,exprlist2(yystack.l_mark[-3].eptr,yystack.l_mark[-1].eptr),
                                 filenode(yystack.l_mark[-5].resptr->line,yystack.l_mark[-5].resptr->len)); }
break;
case 40:
#line 175 "flucid.y"
	{
                yyval.eptr = opnode("append",0,exprlist2(yystack.l_mark[-2].eptr,yystack.l_mark[0].eptr),
                                 filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 41:
#line 178 "flucid.y"
	{
                yyval.eptr =
                        opnode((yystack.l_mark[-1].resptr->strg),0,exprlist2(yystack.l_mark[-2].eptr,yystack.l_mark[0].eptr),
                                 filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 42:
#line 182 "flucid.y"
	{
                if(strcmp(yystack.l_mark[-1].resptr->strg,"minus")==0){
                        yyval.eptr = opnode("uminus",0,listnode(NULL,yystack.l_mark[0].eptr),
                                 filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
                else{
                        yyval.eptr = yystack.l_mark[0].eptr;
                }
        }
break;
case 43:
#line 190 "flucid.y"
	{
                yyval.eptr = opnode(yystack.l_mark[-1].resptr->strg,0,exprlist2(yystack.l_mark[-2].eptr,yystack.l_mark[0].eptr),
                                 filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 44:
#line 193 "flucid.y"
	{
                yyval.eptr = opnode(yystack.l_mark[-1].resptr->strg,0,exprlist2(yystack.l_mark[-2].eptr,yystack.l_mark[0].eptr),
                                 filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 45:
#line 196 "flucid.y"
	{
                yyval.eptr = opnode(yystack.l_mark[-1].resptr->strg,0,exprlist2(yystack.l_mark[-2].eptr,yystack.l_mark[0].eptr),
                                 filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 46:
#line 199 "flucid.y"
	{
                yyval.eptr = opnode("not",0,listnode(NULL,yystack.l_mark[0].eptr),
                                 filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 47:
#line 202 "flucid.y"
	{
                yyval.eptr = opnode("and",0,exprlist2(yystack.l_mark[-2].eptr,yystack.l_mark[0].eptr),
                                 filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 48:
#line 205 "flucid.y"
	{
                yyval.eptr = opnode("or",0,exprlist2(yystack.l_mark[-2].eptr,yystack.l_mark[0].eptr),
                                 filenode(yystack.l_mark[-1].resptr->line,yystack.l_mark[-1].resptr->len)); }
break;
case 49:
#line 208 "flucid.y"
	{
                yyval.eptr = yystack.l_mark[0].eptr;
        }
break;
case 50:
#line 211 "flucid.y"
	{
                yyval.eptr = yystack.l_mark[0].eptr;
        }
break;
case 51:
#line 214 "flucid.y"
	{
                yyval.eptr = yystack.l_mark[0].eptr;
        }
break;
case 52:
#line 217 "flucid.y"
	{ my_yyerror("error in expression"," "); }
break;
case 53:
#line 221 "flucid.y"
	{
                yyval.eptr = opnode("if",0,exprlist3(yystack.l_mark[-3].eptr,yystack.l_mark[-1].eptr,yystack.l_mark[0].eptr),
                                 filenode(yystack.l_mark[-4].resptr->line,yystack.l_mark[-4].resptr->len)); }
break;
case 54:
#line 224 "flucid.y"
	{
                my_yyerror("else or elsif expected"," ");
        }
break;
case 55:
#line 227 "flucid.y"
	{
                my_yyerror("then expected", " ");
        }
break;
case 57:
#line 233 "flucid.y"
	{
                yyval.eptr = opnode("if",0,exprlist3(yystack.l_mark[-3].eptr,yystack.l_mark[-1].eptr,yystack.l_mark[0].eptr),
                                 filenode(yystack.l_mark[-4].resptr->line,yystack.l_mark[-4].resptr->len)); }
break;
case 58:
#line 236 "flucid.y"
	{
                my_yyerror("else or elsif expected"," ");
        }
break;
case 59:
#line 239 "flucid.y"
	{
                my_yyerror("then expected"," ");
        }
break;
case 61:
#line 242 "flucid.y"
	{
                yyval.eptr = yystack.l_mark[-1].eptr;
        }
break;
case 62:
#line 245 "flucid.y"
	{
                my_yyerror("fi expected"," ");
        }
break;
case 63:
#line 251 "flucid.y"
	{ expvalcnt++; }
break;
case 64:
#line 251 "flucid.y"
	{ expval[expvalcnt]=yystack.l_mark[0].eptr;}
break;
case 65:
#line 251 "flucid.y"
	{
                yyval.eptr = yystack.l_mark[-1].eptr;
                expvalcnt--;
        }
break;
case 66:
#line 258 "flucid.y"
	{ yyval.eptr=opnode("if",0,
                                               exprlist3(opnode("eq",0,
                                               exprlist2(expval[expvalcnt],
                                               yystack.l_mark[-4].eptr),
                                 filenode(yystack.l_mark[-3].resptr->line,yystack.l_mark[-3].resptr->len)
                                               ), yystack.l_mark[-2].eptr,yystack.l_mark[0].eptr),
                                 filenode(yystack.l_mark[-3].resptr->line,yystack.l_mark[-3].resptr->len)); }
break;
case 67:
#line 265 "flucid.y"
	{ my_yyerror(": expected"," "); }
break;
case 69:
#line 266 "flucid.y"
	{ my_yyerror(": expected"," "); }
break;
case 71:
#line 267 "flucid.y"
	{ my_yyerror("; expected"," "); }
break;
case 72:
#line 268 "flucid.y"
	{ my_yyerror("; expected"," "); }
break;
case 73:
#line 269 "flucid.y"
	{
        yyval.eptr = yystack.l_mark[-1].eptr;
        }
break;
case 74:
#line 276 "flucid.y"
	{ yyval.eptr = yystack.l_mark[-1].eptr; }
break;
case 75:
#line 280 "flucid.y"
	{ yyval.eptr=opnode("if",0,
                                               exprlist3(yystack.l_mark[-4].eptr,
                                               yystack.l_mark[-2].eptr,yystack.l_mark[0].eptr),
                                 filenode(yystack.l_mark[-3].resptr->line,yystack.l_mark[-3].resptr->len)); }
break;
case 76:
#line 284 "flucid.y"
	{ my_yyerror(": expected"," "); }
break;
case 78:
#line 285 "flucid.y"
	{ my_yyerror(": expected"," "); }
break;
case 80:
#line 286 "flucid.y"
	{ my_yyerror("; expected"," "); }
break;
case 81:
#line 287 "flucid.y"
	{ my_yyerror("; expected"," "); }
break;
case 82:
#line 288 "flucid.y"
	{
        yyval.eptr = yystack.l_mark[-1].eptr;
        }
break;
case 83:
#line 295 "flucid.y"
	{ yyval.eptr = bodynode(NULL,yystack.l_mark[0].eptr); }
break;
case 84:
#line 296 "flucid.y"
	{ yyval.eptr = bodynode(NULL,yystack.l_mark[0].eptr); }
break;
case 85:
#line 298 "flucid.y"
	{ yyval.eptr = bodynode(yystack.l_mark[-1].eptr,yystack.l_mark[0].eptr); }
break;
case 86:
#line 302 "flucid.y"
	{ yyval.eptr = listnode(NULL,yystack.l_mark[0].eptr); }
break;
case 87:
#line 304 "flucid.y"
	{ yyval.eptr = listnode(yystack.l_mark[-1].eptr,yystack.l_mark[0].eptr); }
break;
case 88:
#line 308 "flucid.y"
	{ yyval.eptr = listnode(NULL,yystack.l_mark[0].eptr); }
break;
case 89:
#line 310 "flucid.y"
	{ yyval.eptr = listnode(yystack.l_mark[-1].eptr,yystack.l_mark[0].eptr);  }
break;
case 90:
#line 316 "flucid.y"
	{ yyval.eptr = declnode(yystack.l_mark[-4].resptr->strg,yystack.l_mark[-1].eptr,
                        filenode(yystack.l_mark[-4].resptr->line,yystack.l_mark[-4].resptr->len)); }
break;
case 91:
#line 322 "flucid.y"
	{ yyval.eptr =identlistnode(NULL,yystack.l_mark[0].resptr->strg);
                 idcount++; }
break;
case 92:
#line 325 "flucid.y"
	{ yyval.eptr =identlistnode(yystack.l_mark[-2].eptr,yystack.l_mark[0].resptr->strg); idcount++;}
break;
case 93:
#line 326 "flucid.y"
	{ my_yyerror(", expected"," "); }
break;
case 95:
#line 330 "flucid.y"
	{
                yyval.eptr = defnode(yystack.l_mark[-3].resptr->strg,0,NULL,yystack.l_mark[-1].eptr,
                        filenode(yystack.l_mark[-3].resptr->line,yystack.l_mark[-3].resptr->len)); }
break;
case 96:
#line 333 "flucid.y"
	{ idcount=0; }
break;
case 97:
#line 333 "flucid.y"
	{
                yyval.eptr = defnode(yystack.l_mark[-7].resptr->strg,idcount,yystack.l_mark[-4].eptr,yystack.l_mark[-1].eptr,
                        filenode(yystack.l_mark[-7].resptr->line,yystack.l_mark[-7].resptr->len)); }
break;
case 98:
#line 340 "flucid.y"
	{  yyval.eptr = listnode(NULL,yystack.l_mark[0].eptr);
                exprlistcount[exprlevel]++; }
break;
case 99:
#line 342 "flucid.y"
	{
                yyval.eptr = listnode(yystack.l_mark[-2].eptr,yystack.l_mark[0].eptr);
                exprlistcount[exprlevel]++;
        }
break;
case 100:
#line 346 "flucid.y"
	{ my_yyerror(", expected"," "); }
break;
#line 1468 "y.tab.c"
    }
    yystack.s_mark -= yym;
    yystate = *yystack.s_mark;
    yystack.l_mark -= yym;
    yym = yylhs[yyn];
    if (yystate == 0 && yym == 0)
    {
#if YYDEBUG
        if (yydebug)
            printf("%sdebug: after reduction, shifting from state 0 to\
 state %d\n", YYPREFIX, YYFINAL);
#endif
        yystate = YYFINAL;
        *++yystack.s_mark = YYFINAL;
        *++yystack.l_mark = yyval;
        if (yychar < 0)
        {
            if ((yychar = YYLEX) < 0) yychar = 0;
#if YYDEBUG
            if (yydebug)
            {
                yys = 0;
                if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
                if (!yys) yys = "illegal-symbol";
                printf("%sdebug: state %d, reading %d (%s)\n",
                        YYPREFIX, YYFINAL, yychar, yys);
            }
#endif
        }
        if (yychar == 0) goto yyaccept;
        goto yyloop;
    }
    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
        yystate = yytable[yyn];
    else
        yystate = yydgoto[yym];
#if YYDEBUG
    if (yydebug)
        printf("%sdebug: after reduction, shifting from state %d \
to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
#endif
    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
    {
        goto yyoverflow;
    }
    *++yystack.s_mark = (short) yystate;
    *++yystack.l_mark = yyval;
    goto yyloop;

yyoverflow:
    yyerror("yacc stack overflow");

yyabort:
    yyfreestack(&yystack);
    return (1);

yyaccept:
    yyfreestack(&yystack);
    return (0);
}
